/* 
 * File:   OperacionCargaChunksModificados.h
 * Author: nahuel
 *
 * Created on June 23, 2013, 3:58 PM
 */

#ifndef OPERACIONCARGACHUNKSMODIFICADOS_H
#define	OPERACIONCARGACHUNKSMODIFICADOS_H

#include "client_Operacion.h"
#include "client_FileServiceProxy.h"
#include "common_Repositorio.h"

using namespace TP::Operaciones;
using namespace TP::Servicios;
using namespace TP::Archivos;

/**
 * @class OperacionCargaChunksModificados
 * 
 * Esta operacion maneja las notificaciones del servidor de
 * modificaciones de archivos.
 */
class OperacionCargaChunksModificados : public Operacion {
    private:
        string _nombreArchivo;
        Repositorio* _repositorio;
        FileServiceProxy* _fileService;        
        
    public:
        OperacionCargaChunksModificados(uint32_t pToken,
                                      FileServiceProxy* pFileService, 
                                      Repositorio* pRepositorio, 
                                      const string &pNombreArchivo);        
        void getChunkDelServidor(const uint32_t &pNumeroChunk);
        void manejarRespuestaGetChunksListDelServidor (vector<string> &pRespuesta);
        void manejarRespuestaGetChunkDelServidor (vector<string> &pRespuesta);
        void GuardarChunkEnArchivo (const string& pNombreArchivo, 
                                    const string &pChunk,
                                    int32_t numeroChunk);
        virtual void ejecutar();
        virtual void procesarRespuesta(vector<string> &pRespuesta);
        virtual ~OperacionCargaChunksModificados();
};

#endif	/* OPERACIONCARGACHUNKMODIFICADO_H */

